package com.hf.wujian.model;


import com.hf.wujian.constant.ResultEnum;
import io.netty.channel.ChannelHandlerContext;

import java.util.List;

/**
 * 游戏大厅接口
 *
 * @author hf
 * @date 2018/11/23
 * @version 1.0
 */
public interface GameHall {

    /**
     * 创建游戏房间方法
     * @param uuid 游戏用户uuid
     * @param gameRoomName 房间名
     * @param ctx 客户端通道
     */
    void createGameRoom(String uuid,String gameRoomName,ChannelHandlerContext ctx);

    /**
     * 销毁游戏房间方法
     * @param gameRoomName 房间名
     */
    void destroyGameRoom(String gameRoomName,GameUser gameUser,ChannelHandlerContext ctx);

    /**
     * 加入大厅方法
     * @param gameUser 游戏用户
     * @param ctx 客户端通道
     */
    void addGameUser(GameUser gameUser,ChannelHandlerContext ctx);

    /**
     * 退出大厅方法
     * @param gameUser 游戏用户
     * @param ctx 客户端通道
     */
    void removeGameUser(GameUser gameUser,ChannelHandlerContext ctx);

    /**
     * 获取游戏用户
     * @param uuid 游戏用户uuid
     * @return 游戏用户
     *
     */
    GameUser getGameUser(String uuid);

    /**
     * 获取游戏房间名列表
     *
     * @return 游戏房间名列表
     */
    List<String> getGameRooms();

    /**
     * 根据房间名获得房间
     * @param gameRoom 房间名
     * @return 房间
     */
    GameRoom getGameRoom(String gameRoom);

    /**
     * 获取大厅用户总数
     * @return 大厅用户总数
     */
    int getGameUserSize();

    /**
     * 获取大厅房间总数
     * @return 大厅房间总数
     */
    int getGameRoomSize();

    void returnMsg(ResultEnum resultEnum,ChannelHandlerContext ctx);//返回消息
}
